/*
 * PrimarySelector.h
 *
 *  Created on: 7 Sep 2011
 *      Author: Allan
 */

#ifndef PRIMARYSELECTOR_H_
#define PRIMARYSELECTOR_H_

// C++ includes
#include <string>
#include <vector>
using namespace std;

// GeoReact
#include "ReactionSystem.h"
#include "Multiphase.h"

class PrimarySelector
{
public:
	PrimarySelector(const ReactionSystem& reactions);
	
	const vector<string> 
	SelectByFrequency() const;
	
	const vector<string> 
	SelectByConcentration(const VectorXd& n) const;
	
private:
	const ReactionSystem& reactions;
	
private:
	const unsigned
	NumberPrimarySpecies() const;
	
	const unsigned
	SpeciesFrequency(const string& species, const ReactionSystem& reactions) const;
};

#endif /* PRIMARYSELECTOR_H_ */
